//package org.sraosha.microservice.gateway.config;
//
//import org.sraosha.base.pojo.constants.MultipleDataSource;
//
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.List;
//
///**
// * 数据源上线文
// */
//public class DynamicDataSourceContextHolder {
//    /**
//     * 实际上就是开启多个线程，每个线程进行初始化一个数据源
//     */
//    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<String>() {
//
//        /**
//         * 将 master 数据源的 key作为默认数据源的 key
//         */
//        @Override
//        protected String initialValue() {
//            return MultipleDataSource.ADAM;
//        }
//    };
//
//
//    /**
//     * 数据源的 key集合，用于切换时判断数据源是否存在
//     */
//    public static List<Object> dataSourceKeys = new ArrayList<Object>();
//
//    /**
//     * 切换数据源
//     *
//     * @param key
//     */
//    public static void setDataSourceKey(String key) {
//        CONTEXT_HOLDER.set(key);
//    }
//
//    /**
//     * 获取数据源
//     *
//     * @return
//     */
//    public static String getDataSourceKey() {
//        return CONTEXT_HOLDER.get();
//    }
//
//    /**
//     * 重置数据源
//     */
//    public static void clearDataSourceKey() {
//        CONTEXT_HOLDER.remove();
//    }
//
//    /**
//     * 判断是否包含数据源
//     *
//     * @param key 数据源key
//     * @return
//     */
//    public static boolean containDataSourceKey(String key) {
//        return dataSourceKeys.contains(key);
//    }
//
//    /**
//     * 添加数据源keys
//     *
//     * @param keys
//     * @return
//     */
//    public static boolean addDataSourceKeys(Collection<? extends Object> keys) {
//        return dataSourceKeys.addAll(keys);
//    }
//}
